package br.com.decorando.dao;

import java.util.ArrayList;
import java.util.List;

import android.content.Context;
import android.util.Log;
import br.com.decorando.model.AcessoBanco;
import br.com.decorando.model.Perfil;


public class PerfilDao {
	private Context context;
	private AcessoBanco acessoBanco = new AcessoBanco();
			
	public PerfilDao(Context context) {
		super();
		this.context = context;
	}
		
	public List<Perfil> list(){
		List<Perfil> perfis = new ArrayList<Perfil>();
		String queryString = "Select cd_perfil, nm_perfil, ic_perfil_ativo from perfil";
		List<String[]> dados = acessoBanco.buscarDados(context, queryString, 3);
		for(String[] dado : dados){
			Perfil perfil = new Perfil();		
			perfil.setId(Integer.parseInt(dado[0]));
			perfil.setName(dado[1]);			
			perfil.setAtivo(dado[2].equals("1")? true : false);
			perfis.add(perfil);
		}
		return perfis;
	}
	
	public List<Perfil> listAtivos(){
		List<Perfil> perfis = new ArrayList<Perfil>();
		String queryString = "Select cd_perfil, nm_perfil, ic_perfil_ativo from perfil "
				+ " where ic_perfil_ativo = 1";
		List<String[]> dados = acessoBanco.buscarDados(context, queryString, 3);
		for(String[] dado : dados){
			Perfil perfil = new Perfil();		
			perfil.setId(Integer.parseInt(dado[0]));
			perfil.setName(dado[1]);
			perfil.setAtivo(dado[2].equals("1")? true : false);
			perfis.add(perfil);
		}		
		return perfis;
	}
	
	public Perfil get(Perfil perfil){
		return get(perfil.getId());
	}
	
	public Perfil get(int id){			
		String queryString = "Select * from perfil where cd_perfil = " + id;
		String[] dado = acessoBanco.buscarDados(context, queryString, 3).get(0);		
		Perfil perfil = new Perfil();
		perfil.setId(Integer.parseInt(dado[0]));
		perfil.setName(dado[1]);
		perfil.setAtivo(dado[2].equals("1")? true : false);
		return perfil;			
	}
	
	public void save(Perfil perfil){
		int id = maxId() + 1;
		StringBuilder builder = new StringBuilder("Insert into perfil(cd_perfil, nm_perfil, ic_perfil_ativo) ");
		builder.append(" Values(").append(id).append(",'").append(perfil.getName()).append("', 1)");		
		String message = acessoBanco.comandoDML(context, builder.toString());				
	}
	
	public void update(Perfil perfil){
		StringBuilder builder = new StringBuilder("Update perfil ");
		builder.append(" set nm_perfil = '").append(perfil.getName()).append("', ");
		builder.append(" ic_perfil_ativo = ").append(perfil.isAtivo()? 1 : 0);
		builder.append(" where cd_perfil = ").append(perfil.getId());
		String message = acessoBanco.comandoDML(context, builder.toString());				
	}
	
	public void delete(Perfil perfil){
		StringBuilder builder = new StringBuilder("Delete From perfil ");		
		builder.append(" where cd_perfil = ").append(perfil.getId());
		String message = acessoBanco.comandoDML(context, builder.toString());				
	}
	
	public int maxId(){
		String queryString = "Select max(cd_perfil) from perfil";
		String[] dado = acessoBanco.buscarDados(context, queryString, 1).get(0);
		return Integer.parseInt(dado[0] == null? "0" : dado[0]);
	}
}
